package com.wushuu.ce.utils;

import org.apache.commons.beanutils.BeanUtils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * ============================================================
 * <br/>
 * 作 者 :        xyb
 * <br/>
 * 版 本 :        1.0
 * <br/>
 * 创建日期 ：     2016-05-12 上午11:08
 * <br/>
 * 描 述 ：        常用转换的工具类
 * <br/>
 * 修订历史 ：
 * <br/>
 * ============================================================
 **/
public class TransferUtils {

    /**
     * Map --> Bean
     */
    public static void transMap2Bean(Map<String, Object> map, Object obj) {
        if (map == null || map.size() == 0) {
            return;
        }
        try {
            BeanUtils.populate(obj, map);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Bean --->Map
     */
    public static Map<String, Object> transBean2Map(Object obj) {

        if (obj == null) {
            return null;
        }

        Map<String, Object> map = new HashMap<String, Object>();
        try {
            Class clazz = obj.getClass();
            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                field.setAccessible(true);
                String fieldName = field.getName();
                String methodName = new StringBuffer("get").append(fieldName.substring(0, 1).toUpperCase()).append(fieldName.substring(1)).toString();
                Method method = obj.getClass().getMethod(methodName);
                Object value = method.invoke(obj);
                map.put(fieldName, value);
            }


        } catch (Exception e) {
            System.out.println("transBean2Map Error " + e);
        }

        return map;

    }


}
